[小ネタ]Codebuildのビルドログが出力されない件について
こんにちは。たかやまです。
今回は小ネタで、Codebuildのログ出力設定をしているのにビルドログが出力されなかった件をまとめたいと思います。
先にまとめ
ビルドログが出力されない原因は、CodebuildのVPCアクセスを有効にしていてCloudWatch logsにアクセスする経路が無い場合に発生します。
状況に合わせて、いずれか方法でログ出力の経路を用意してください。
- NAT GatewayまたはNAT Instanceを用意する
- CloudWatch logsエンドポイントを用意する
- VPCアクセスを利用しない(そもそもVPCアクセスが必要なければ)
ハマった理由
自分がハマった理由は、Codebuildをパブリックサブネットに作成して利用しており、CodebuildがよしなにグローバルIPを取得して通信してくれるものと勝手に勘違いしてハマっていました。。このあたりもちゃんとドキュメントに書かれていますね。
VPC で CodeBuild を使用するには、NAT ゲートウェイまたは NAT インスタンスが必要です。これにより、CodeBuild はパブリックエンドポイントにアクセスできるようになります (ビルドの実行時に CLI コマンドを実行する場合など)。CodeBuild は、作成したネットワークインターフェイスへの Elastic IP アドレスの割り当てをサポートしていないため、NAT ゲートウェイや NAT インスタンスの代わりにインターネットゲートウェイを使用することはできません。
Amazon Virtual Private Cloud での AWS CodeBuild の使用 - AWS CodeBuild
なので、VPCアクセス利用時にビルドログを確認するにはNATを利用するか、CloudWatch logsへのエンドポイントを用意する必要があります。
ちなみにCodebuildがCloudWatch logsへ出力を失敗した場合、フェーズ詳細のFINALIZING
にlog cleanup timed out
が記録されます。
最後に
Google先生に「Codebuild ビルドログ」で聞いてみると「出力されない」とサジェストしてくるので、結構同様の方がいるのかなと思いブログにしました。
このブログが誰かの助けになれば幸いです。
以上、たかやまでした。